/**
 * vuex 账本管理模块
 */

const types = {
	enqrDataByPage : "enqrDataByPage",
	clearEnqrData: "clearEnqrData",
}

const initPageParam = {
	data:[],
	getCount: false,
	hasMore: false,
	pagination:{
		"pageIndex": 0,
		"pageSize": 10
	},
	total: 0
}

export default {
	// 通过添加 namespaced: true 的方式使其成为带命名空间的模块
	namespaced: true,
	/**
	 * vuex的基本数据，用来存储变量
	 */
	state: {
		enqrDataByPage: initPageParam
	},
	/**
	 * 从基本数据(state)派生的数据，相当于state的计算属性
	 */
	getters: {
	
	},
	/**
	 * 提交更新数据的方法，必须是同步的(如果需要异步使用action)。
	 * 每个 mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler)。
	 * 回调函数就是我们实际进行状态更改的地方，并且它会接受 state 作为第一个参数，提交载荷作为第二个参数。
	 */
	mutations: {
		[types.enqrDataByPage] (state,{res}){
			if(res == null || res.data == null) {
				return
			}
			let {data, getCount, hasMore, pagination, total} = res.data
			let _data = [...state.enqrDataByPage.data,...data]
			state.enqrDataByPage = {getCount, hasMore, pagination, total,data:_data}
		},
		[types.clearEnqrData] (state){
			state.enqrDataByPage = initPageParam
		}
	},
	/**
	 * 和mutation的功能大致相同，不同之处在于 ==》
	 * 1. Action 提交的是 mutation，而不是直接变更状态。 
	 * 2. Action 可以包含任意异步操作。
	 */
	actions: {
		enqrDataByPage({commit}, {res}){
			commit(types.enqrDataByPage,{res})
		},
		clearEnqrData({commit}){
			commit(types.clearEnqrData)
		},
	}
}